home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / cat / catbutto.i < prev    next >
Text File  |  1997-10-26  |  7KB  |  244 lines

  1. IMPLEMENTATION MODULE CatButtons;
  2.  
  3. FROM SYSTEM          IMPORT ADDRESS, ADR, CALLSYS, CADR;
  4. FROM UserInformation IMPORT UserBLK;
  5. FROM Void            IMPORT v;
  6. IMPORT MagicAES;
  7. IMPORT MausTauschrsc;
  8. IMPORT MTE;
  9. IMPORT mtAppl;
  10. IMPORT mtAlerts;
  11. IMPORT mtUtils;
  12. IMPORT WdwManager;
  13. IMPORT CatGlobal;
  14. IMPORT ConfVars;
  15. IMPORT Varnames;
  16. IMPORT MTPaths;
  17. IMPORT mtDir;
  18. IMPORT GrafBase;
  19.  
  20. CONST elements = {MagicAES.NAME, MagicAES.CLOSER, MagicAES.MOVE};
  21.  
  22. VAR (*WinHandle : INTEGER;*)
  23.     j,t       : INTEGER;
  24.     ButtonWin      : ADDRESS;
  25.     objPtr    : POINTER TO ARRAY[0..200] OF MagicAES.OBJECT;
  26.     name      : ARRAY[0..20] OF CHAR;
  27.     wdwTopped : BOOLEAN;
  28.     isHidden  : BOOLEAN;
  29.     globalExit: BOOLEAN;
  30.  
  31. PROCEDURE clickInButton (wdw, vdi : INTEGER; env : ADDRESS; mx, my : INTEGER; kstate, buts : BITSET; clicks :INTEGER): BOOLEAN;
  32. BEGIN
  33.   (* Hier FALSE zurckgeben, da das in CAT.M behandelt wird *)
  34.   RETURN FALSE;
  35. END clickInButton;
  36.  
  37. PROCEDURE kProc (wdw, vdi : INTEGER; env: ADDRESS; taste: INTEGER; key, scan : CHAR; kstate : BITSET): BOOLEAN;
  38. BEGIN
  39.   RETURN FALSE
  40. END kProc;
  41.  
  42. PROCEDURE closeButton (wdw, vdi: INTEGER; env : ADDRESS; force : BOOLEAN): BOOLEAN;
  43. BEGIN
  44.   IF ~isHidden & buttonWindowLocked & ~force THEN RETURN FALSE END;
  45.   WinHandle := -1;
  46.   v.bool := ConfVars.SetConfigBool (cButtonOpen, globalExit);
  47.   RETURN TRUE
  48. END closeButton;
  49.  
  50. PROCEDURE hideButton (wdw, vdi: INTEGER; env : ADDRESS; hide : BOOLEAN);
  51. BEGIN
  52.   IF wdw = WinHandle
  53.   THEN
  54.     isHidden := hide;
  55.   END;
  56. END hideButton;
  57.  
  58. PROCEDURE timerButton (wdw, vdi: INTEGER; env : ADDRESS): BOOLEAN;
  59. BEGIN
  60.   IF wdw = WinHandle
  61.   THEN
  62.     IF wdwTopped THEN wdwTopped := FALSE; WdwManager.WindowIsClosed (wdw); END;
  63.   END;
  64.   RETURN FALSE;
  65. END timerButton;
  66.  
  67. PROCEDURE topButton (wdw, vdi: INTEGER; env: ADDRESS): BOOLEAN;
  68. BEGIN
  69.   wdwTopped := TRUE;
  70.   RETURN TRUE
  71. END topButton;
  72.  
  73. PROCEDURE untopButton (wdw, vdi: INTEGER; env: ADDRESS);
  74. BEGIN
  75.   WdwManager.WindowIsClosed (wdw);
  76. END untopButton;
  77.  
  78. PROCEDURE setWork (wdw, vdi: INTEGER; env: ADDRESS; doc: GrafBase.LongRect; slided: BOOLEAN);
  79. END setWork;
  80.  
  81. PROCEDURE getRect (wdw, vdi: INTEGER; env: ADDRESS; VAR r : GrafBase.Rectangle);
  82. BEGIN
  83.   WdwManager.GetWdwSize (wdw, UserBLK.buttonW);
  84.   v.bool := ConfVars.SetConfigRect (cButton, UserBLK.buttonW);
  85.   objPtr^[0].obX := r.x;
  86.   objPtr^[0].obY := r.y;
  87. END getRect;
  88.  
  89. PROCEDURE redrawButton (wdw, vdi : INTEGER; env : ADDRESS; clip : GrafBase.Rectangle);
  90. VAR 
  91.     path: ARRAY [0..255] OF CHAR;
  92.     name: ARRAY [0..15] OF CHAR;
  93. BEGIN
  94.   mtDir.SplitPath (MTPaths.lastInfName, path, name, path);
  95.   mtUtils.SetObjcString (ButtonWin, MausTauschrsc.catinfna, name);
  96.   MagicAES.ObjcDraw (ButtonWin, 0, 8, clip);
  97. END redrawButton;
  98.  
  99. PROCEDURE updateButton (wdw, vdi: INTEGER; env: ADDRESS; doIt: BOOLEAN);
  100. BEGIN
  101.   IF doIt 
  102.   THEN 
  103.     MagicAES.WindUpdate (MagicAES.BEGUPDATE);
  104.     mtAppl.MouseOff();
  105.   ELSE
  106.     mtAppl.MouseOn();
  107.     MagicAES.WindUpdate (MagicAES.ENDUPDATE);
  108.   END;
  109. END updateButton;
  110.  
  111. PROCEDURE IsButtonTop(handle : INTEGER):BOOLEAN;
  112. BEGIN
  113.   RETURN handle = WinHandle
  114. END IsButtonTop;
  115.  
  116. PROCEDURE setLook (ob: INTEGER);
  117. BEGIN
  118.   mtUtils.SetFlag (ButtonWin, ob, MagicAES.Exit, CatGlobal.tos3DLook);
  119.   mtUtils.SetFlag (ButtonWin, ob, MagicAES.TOUCHEXIT, ~CatGlobal.tos3DLook);
  120. END setLook;
  121.  
  122. PROCEDURE DisplayButton(init : BOOLEAN):BOOLEAN;
  123. VAR setName : RECORD CASE :BOOLEAN OF
  124.                        TRUE  : nameAdr, dum : ADDRESS|
  125.                        FALSE : handle,d1,d2,d3 : INTEGER
  126.                      END
  127.                    END;
  128.     newY    : INTEGER;
  129. BEGIN
  130.   IF WinHandle < 0 THEN
  131.     IF init THEN
  132.       IF ConfVars.GetConfigBool (cButtonOpen, v.bool) & ~v.bool
  133.       THEN
  134.         RETURN FALSE
  135.       END;
  136.     END;
  137.     WITH UserBLK.buttonW DO
  138.       IF (x >= mtAppl.MaxWidth) OR (y >= mtAppl.MaxHeight) THEN y := 0 END;
  139.       IF y = 0 THEN
  140.         UserBLK.buttonW := WdwManager.deskSize;
  141.         newY := y;
  142.       ELSE
  143.         newY := -1;
  144.       END;
  145.       MagicAES.WindCalc(MagicAES.WCWORK, elements, UserBLK.buttonW, UserBLK.buttonW);
  146.       w := objPtr^[0].obWidth;
  147.       h := objPtr^[0].obHeight;
  148.       MagicAES.WindCalc(MagicAES.WCBORDER, elements, UserBLK.buttonW, UserBLK.buttonW);
  149.       IF newY > 0 THEN y := newY END;
  150.       IF WdwManager.OpenWindow (clickInButton, kProc, timerButton, 
  151.                                 UserBLK.buttonW, UserBLK.buttonW, elements, 
  152.                                 FALSE, '', name, WdwManager.snapProc (NIL),
  153.                                 closeButton, redrawButton, topButton, 
  154.                                 untopButton, updateButton, setWork, getRect, 
  155.                                 hideButton, 0, NIL, 
  156.                                 FALSE, TRUE, TRUE, FALSE, WinHandle, v.int)
  157.       THEN
  158.         isHidden := FALSE;
  159.         (* Buttons an 3D-Look anpassen *)
  160.         setLook (MausTauschrsc.readnew);
  161.         setLook (MausTauschrsc.readunread);
  162.         setLook (MausTauschrsc.readpos);
  163.         setLook (MausTauschrsc.readall);
  164.         setLook (MausTauschrsc.readdate);
  165.         setLook (MausTauschrsc.readnum);
  166.         setLook (MausTauschrsc.newmess);
  167.         setLook (MausTauschrsc.newpers);
  168.         (* Ok, Fenster ist offen *)
  169.         v.bool := ConfVars.SetConfigBool (cButtonOpen, TRUE);
  170.         WdwManager.GetWdwWork (WinHandle, UserBLK.buttonW); 
  171.         objPtr^[0].obX := x;
  172.         objPtr^[0].obY := y;
  173.         WdwManager.GetWdwSize (WinHandle, UserBLK.buttonW); 
  174.         v.bool := ConfVars.SetConfigRect (cButton, UserBLK.buttonW);
  175.         (* Wieder rausnehmen aus WindowQueue *)
  176.         WdwManager.WindowIsClosed (WinHandle);
  177.         RETURN TRUE
  178.       ELSE
  179.         v.int := mtAlerts.Alert(1, MTE.NoWin);
  180.         v.bool := ConfVars.SetConfigBool (cButtonOpen, FALSE);
  181.         RETURN FALSE
  182.       END;
  183.     END
  184.   ELSE
  185.     WdwManager.GetTopWindow (setName.handle, v.int);
  186.     IF setName.handle = WinHandle THEN
  187.       WdwManager.TopNextWindow();
  188.       RETURN TRUE
  189.     ELSE
  190.       WdwManager.TopWindow (WinHandle);
  191.       (* Wieder rausnehmen aus WindowQueue *)
  192.       WdwManager.WindowIsClosed (WinHandle);
  193.       RETURN TRUE
  194.     END
  195.   END;
  196. END DisplayButton;
  197.  
  198. PROCEDURE CloseButton(exit: BOOLEAN);
  199. BEGIN
  200.   IF WinHandle > 0 THEN
  201.     globalExit := exit;
  202.     v.bool := WdwManager.CloseWindow (WinHandle, FALSE);
  203.     v.bool := ConfVars.SetConfigBool (cButtonOpen, exit);
  204.   END;
  205. END CloseButton;
  206.  
  207. PROCEDURE ClickIsInButton(Wx,Wy : INTEGER):BOOLEAN;
  208. VAR wdw : INTEGER;
  209. BEGIN
  210.   IF WinHandle > 0 THEN
  211.     WdwManager.ClickInWindow (Wx, Wy, wdw);
  212.     IF WinHandle = wdw THEN
  213.       RETURN TRUE
  214.     ELSE
  215.       RETURN FALSE
  216.     END
  217.   ELSE
  218.     RETURN FALSE
  219.   END
  220. END ClickIsInButton;
  221.  
  222. PROCEDURE DrawButton(which : INTEGER);
  223.   VAR r : GrafBase.Rectangle;
  224. BEGIN
  225.   IF WinHandle >= 0 THEN
  226.     mtUtils.CalcArea (ButtonWin, which, r);
  227.     WdwManager.RedrawWdw (WinHandle, r);
  228.   END;
  229. END DrawButton;
  230.  
  231. PROCEDURE InitButtonWindow();
  232. BEGIN
  233.   ButtonWin := MausTauschrsc.TreeAddr^[MausTauschrsc.desk];
  234.   objPtr := ButtonWin;
  235. END InitButtonWindow;
  236.  
  237. BEGIN
  238.   WinHandle := -1;
  239.   name      := ' Cat ';
  240.   globalExit := FALSE;
  241.   buttonWindowLocked := FALSE;
  242.   isHidden := FALSE;
  243. END CatButtons.
  244.